package cn.eaay.stock.mapper;

import cn.eaay.stock.pojo.StockMarketIndexInfo;
import cn.eaay.stock.vo.stock.StockMarketIndexInfoVo;
import cn.eaay.stock.vo.stock.StockOuterMarketIndexVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author yangjiachang
 * @description 针对表【stock_market_index_info(股票大盘数据详情表)】的数据库操作Mapper
 * @createDate 2022-02-12 16:02:46
 * @Entity cn.eaay.stock.pojo.StockMarketIndexInfo
 */
public interface StockMarketIndexInfoMapper {

    int deleteByPrimaryKey(Long id);

    int insert(StockMarketIndexInfo record);

    int insertSelective(StockMarketIndexInfo record);

    StockMarketIndexInfo selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(StockMarketIndexInfo record);

    int updateByPrimaryKey(StockMarketIndexInfo record);

    /**
     * 获取国内大盘最新的详细信息
     *
     * @param inner   国内大盘id集合
     * @param avlDate 日期
     * @return {@link StockMarketIndexInfoVo 大盘指数详情VO}
     */
    List<StockMarketIndexInfoVo> getInnerStockMarket(@Param("marketIds") List<String> inner, @Param("avlDate") String avlDate);

    /**
     * 查询国内大盘股票交易量
     * 条件: 1.深证和沪证 2.当前时间 3.当前时间和前交易日时间实时查询
     *
     * @param date 当前时间: 若当前时间不在股票交易日内，则按照前一个有效股票交易日作为参数
     * @return
     */
    List<Map> getStockTradeVolume(@Param("stockDate") String date);

    /**
     * 批量添加大盘数据
     * 数据来自阿里api
     *
     * @param infos
     */
    void insertBatch(List<StockMarketIndexInfo> infos);

    /**
     * 获取外盘指数信息
     *
     * @param outerMarketIdList 外盘股票ID集合
     * @param marketDay         最近有效交易日期
     * @return
     */
    List<StockOuterMarketIndexVo> getOuterStockMarket(@Param("outerMarketIdList") List<String> outerMarketIdList,
                                                      @Param("marketDay") String marketDay);
}
